home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / ss / ct_c.awk next >
Text File  |  2005-10-13  |  2KB  |  76 lines

  1. /^command_table / {
  2.     cmdtbl = $2;
  3.     printf "/* %s.c - automatically generated from %s.ct */\n", \
  4.         rootname, rootname > outfile
  5.     print "#include <ss/ss.h>" > outfile
  6.     print "" >outfile
  7. }
  8.     
  9. /^BOR$/ {
  10.     cmdnum++
  11.     options = 0
  12.     cmdtab = ""
  13.     printf "static char const * const ssu%05d[] = {\n", cmdnum > outfile
  14. }
  15.  
  16. /^sub/ {
  17.     subr = substr($0, 6, length($0)-5)
  18. }
  19.  
  20. /^hlp/ {
  21.     help = substr($0, 6, length($0)-5)
  22. }
  23.  
  24. /^cmd/ {
  25.     cmd = substr($0, 6, length($0)-5)
  26.     printf "%s\"%s\",\n", cmdtab, cmd > outfile
  27.     cmdtab = "    "
  28. }
  29.  
  30. /^opt/ {
  31.     opt = substr($0, 6, length($0)-5)
  32.     if (opt == "dont_list") {
  33.         options += 1
  34.     }
  35.     if (opt == "dont_summarize") {
  36.         options += 2
  37.     }
  38. }
  39.  
  40. /^EOR/ {
  41.     print "    (char const *)0" > outfile
  42.     print "};" > outfile 
  43.     printf "extern void %s __SS_PROTO;\n", subr > outfile
  44.     # Work around a bug in gawk 3.0.5
  45.     awk_bug = cmdnum
  46.     subr_tab[awk_bug] = subr
  47.     options_tab[awk_bug] = options
  48.     help_tab[awk_bug] = help
  49. }
  50.  
  51. /^[0-9]/ {
  52.     linenum = $1;
  53. }
  54.  
  55. /^ERROR/ {
  56.     error = substr($0, 8, length($0)-7)
  57.     printf "Error in line %d: %s\n", linenum, error
  58.     print "#__ERROR_IN_FILE__" > outfile
  59. }
  60.  
  61. END {
  62.     printf "static ss_request_entry ssu%05d[] = {\n", cmdnum+1 > outfile
  63.     for (i=1; i <= cmdnum; i++) {
  64.         printf "    { ssu%05d,\n", i > outfile
  65.         printf "      %s,\n", subr_tab[i] > outfile
  66.         printf "      \"%s\",\n", help_tab[i] > outfile
  67.         printf "      %d },\n", options_tab[i] > outfile
  68.     }
  69.     print "    { 0, 0, 0, 0 }" > outfile
  70.     print "};" > outfile
  71.     print "" > outfile
  72.     printf "ss_request_table %s = { 2, ssu%05d };\n", \
  73.         cmdtbl, cmdnum+1 > outfile
  74. }
  75.  
  76.